package com.advanced.date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

/**
 * 8：让用户输入一个日期字符串，将其转换成日期格式，格式是（yyyy/MM/dd,yyyyMMdd,yyyy-MM-dd）中的一种，任何一种转换成功都可以；
 * 如果所有的都无法转换，输出日期格式非法。 9：输出1900年到现在所有的闰年
 * 10：用户输入出生日期（月-日），计算距离他的下个生日还有几天（注意：2月29的处理）
 * 
 * @author zhaoyang
 *
 */
public class DateWork2 {

	public static void main(String[] args) {
		// 8：让用户输入一个日期字符串，将其转换成日期格式，格式是（yyyy/MM/dd,yyyyMMdd,yyyy-MM-dd）中的一种，任何一种转换成功都可以；
		// 如果所有的都无法转换，输出日期格式非法。
		SimpleDateFormat s1 = new SimpleDateFormat("yyyy-MM-dd");
		Scanner input = new Scanner(System.in);
		System.out.println("请输入一个日期，要求格式必须为：yyyy-MM-dd");
		try {
			Date d1 = s1.parse(input.next());
			System.out.println(d1);
			System.out.println(String.format("您输入的是：%d年%d月%d日", d1.getYear() + 1900, d1.getMonth() + 1, d1.getDate()));
		} catch (ParseException e) {
			System.err.println("日期格式输入错误！");
			e.printStackTrace();
		}

		// 9：输出1900年到现在所有的闰年
		Calendar c1 = Calendar.getInstance();
		for (c1.set(1900, 0, 1); c1.get(Calendar.YEAR) <= 2020; c1.add(Calendar.YEAR, 1)) {
			if (c1.get(Calendar.YEAR) % 100 == 0) {
				if (c1.get(Calendar.YEAR) % 400 == 0) {
					System.out.println(c1.get(Calendar.YEAR) + "是闰年！");
				}
			} else if (c1.get(Calendar.YEAR) % 4 == 0) {
				System.out.println(c1.get(Calendar.YEAR) + "是闰年！");
			}
		}

		// 10：用户输入出生日期（月-日），计算距离他的下个生日还有几天（注意：2月29的处理）
		SimpleDateFormat s2 = new SimpleDateFormat("MM月dd日");
		System.out.println("请输入您的生日，格式务必为：（--月--日）");
		try {
			String str1 = input.next();
			Date d2 = s2.parse(str1);
			d2.setYear(120);
			System.out.println(d2);
			Date d3 = new Date();// 今天的日期
			System.out.println(d3);
			if (d2.getTime() > d3.getTime()) {// 今年生日还没到
				long t1 = d2.getTime() - d3.getTime();
				System.out.println("距您下个生日还有" + t1 / 1000 / 3600 / 24 + "天！");
			} else {// 今年生日已经过了
				Date d4 = s2.parse(str1);
				d4.setYear(121);
				long t2 = d4.getTime() - d3.getTime();
				System.out.println("距您下个生日还有" + t2 / 1000 / 3600 / 24 + "天！");
			}

		} catch (ParseException e) {
			System.err.println("生日格式输入错误！");
			e.printStackTrace();
		}
	}

}
